<?php

require_once 'Basic.php';

mustBeEmployee();

class ClientList {
  
  private $list;
  private $dbFail;
  
  public function __construct() {
    $this->list = new Report();
    $this->dbFail = false;
    $this->buildList();
  }
  
  private function buildList() {
    $db = new DBUtils();
    
    try {
      $db->connect();
      $db->runQuery("select tipoCliente, nomeCliente, razaoSocial, CPF, CNPJ, email, idCliente, tipoPF from DadosCliente");
      for($item = $db->getItem(); $item !== null; $item = $db->getItem()) {
        $listItem = new ReportItem("-");
        switch($item->tipoCliente) {
          case "fisica":
            $listItem->addLine("Nome", $item->nomeCliente);
            $listItem->addLine("Email", $item->email);
            $listItem->addLine("CPF", $item->CPF);
            $listItem->addLine("Poderia conduzir", $item->tipoPF === "condutor" ? "sim" : "não");
            break;
          case "juridica":
            $listItem->addLine("Razão Social", $item->razaoSocial);
            $listItem->addLine("Email", $item->email);
            $listItem->addLine("CNPJ", $item->CNPJ);
            break;
        }
        $listItem->addLink("Ver mais", "ClientInfo.php?idCliente=" . $item->idCliente);
        $listItem->addLink("Editar", StdForm::decoreHref("ClientEdit.php?idCliente=" . $item->idCliente, StdForm::ACTION_VALUE_PRINT));
        $listItem->addLink("Remover", "RemoveClient.php?idCliente=" . $item->idCliente);
        $listItem->addLink("Editar dados de condutor", StdForm::decoreHref("EditDriver.php?idCliente=" . $item->idCliente, 
        																																	 StdForm::ACTION_VALUE_PRINT));
        $this->list->addItem($listItem);
      }
      $db->close();
    }
    catch(DBError $e) {
      $db->close(false);
      $this->dbFail = true;
      logMessage($e, "ClientList");
    }
  }
  
  public function getHtml() {
    if($this->dbFail) {
      return "<p>Falha ao acessar o banco de dados. O erro foi reportado.</p>";
    }
    else {
      return $this->list->getHtml();
    }
  }
  
}

$list = new ClientList();
$page = new Page("Listagem de Clientes");
$page->addContent($list->getHtml());
echo $page->getHtml();